package com.weetop.aklyscan.apiUtils;


import com.weetop.aklyscan.base.mvp.BaseModel;
import com.weetop.aklyscan.bean.BaseList;
import com.weetop.aklyscan.bean.BaseObject;
import com.weetop.aklyscan.bean.ChaXunBean;
import com.weetop.aklyscan.bean.ChaXunDetailBean1;
import com.weetop.aklyscan.bean.ChaXunDetailBean2;
import com.weetop.aklyscan.bean.ChanpinChukuBean;
import com.weetop.aklyscan.bean.FittingDetailBean;
import com.weetop.aklyscan.bean.FittingInfo;
import com.weetop.aklyscan.bean.InStockItemBean;
import com.weetop.aklyscan.bean.InventoryOrderBean;
import com.weetop.aklyscan.bean.KuaiDiBean;
import com.weetop.aklyscan.bean.KuaiDiImgBean;
import com.weetop.aklyscan.bean.LoginBean;
import com.weetop.aklyscan.bean.LogisticsBean;
import com.weetop.aklyscan.bean.MailBean;
import com.weetop.aklyscan.bean.MailBean1;
import com.weetop.aklyscan.bean.MailNumberBean;
import com.weetop.aklyscan.bean.MaterialInfoBean;
import com.weetop.aklyscan.bean.MatterRecordListBean;
import com.weetop.aklyscan.bean.OfficeBean;
import com.weetop.aklyscan.bean.OnLineOrderBean;
import com.weetop.aklyscan.bean.OnlineOutStockItemBean;
import com.weetop.aklyscan.bean.OperationRecordBean;
import com.weetop.aklyscan.bean.OrderDetailBean;
import com.weetop.aklyscan.bean.OutRecordListBean;
import com.weetop.aklyscan.bean.OutStockItemBean;
import com.weetop.aklyscan.bean.ProductDetailBean;
import com.weetop.aklyscan.bean.ProductInfo;
import com.weetop.aklyscan.bean.RecordBean;
import com.weetop.aklyscan.bean.RecordListBean;
import com.weetop.aklyscan.bean.ScanChukuBean;
import com.weetop.aklyscan.bean.ScanGoodsCodeBean;
import com.weetop.aklyscan.bean.ScanShelfCodeBean;
import com.weetop.aklyscan.bean.SearchBean;
import com.weetop.aklyscan.bean.SearchItemBean;
import com.weetop.aklyscan.bean.SendRecordBean;
import com.weetop.aklyscan.bean.SerailBean;
import com.weetop.aklyscan.bean.SerailBean1;
import com.weetop.aklyscan.bean.StockPostionBean;
import com.weetop.aklyscan.bean.THRecordBean;
import com.weetop.aklyscan.bean.TransferBoxBean;
import com.weetop.aklyscan.bean.TypeInfo;
import com.weetop.aklyscan.bean.UserInfoBean;
import com.weetop.aklyscan.bean.VersionBean;
import com.weetop.aklyscan.bean.ZXGoodsInfo;
import com.weetop.aklyscan.bean.ZXOrderInfo;

import org.json.JSONArray;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PartMap;
import retrofit2.http.Url;

/**
 * File descripition:
 * <p>
 * \@GET  Observable    @Query
 * \@FormUrlEncoded     @POST   Observable  @FieldMap   @FieldMap HashMap<String, String> params
 * \@Multipart  @POST   Observable  @PartMap    @PartMap Map<String, RequestBody> map
 *
 * @author lp
 * @date 2018/6/19
 */

public interface ApiServer {

    /**
     * 验证 验证码
     */
    @FormUrlEncoded
    @POST("pad/login/code")
    Observable<BaseModel<LoginBean>> checkCode(@FieldMap() Map<String, String> data);

    /**
     * 注册
     */
    @POST("/user/shop/apply/status")
    Observable<BaseModel<String>> getApplyStatus();

    /**
     * 商家入驻申请
     */
    @Multipart
    @POST("/shop/apply")
    Observable<BaseModel<String>> toEnter(@PartMap() Map<String, RequestBody> data);

    /**
     * 登录接口
     */
    @FormUrlEncoded
    @POST("pad/login")
    Observable<BaseModel<String>> login(@Field("username") String username, @Field("password") String password, @Field("port") String port);

    /**
     * 退出登录接口
     */
    @POST("pad/logout")
    Observable<BaseModel<Object>> logout();

    /**
     * 退出登录接口
     */
    @POST("pad/Into/Into23")
    Observable<BaseModel<VersionBean>> Into23();

    /**
     * 产品中转箱扫码
     */
    @FormUrlEncoded
    @POST("pad/Into/Into01")
    Observable<BaseModel<Object>> into01(@Field("barcode") String barcode);

    /**
     * 配件中转箱扫码
     */
    @FormUrlEncoded
    @POST("pad/Into/Into02")
    Observable<BaseModel<Object>> into02(@Field("barcode") String barcode, @Field("items") JSONArray items);

    /**
     * 扫描货架编码
     */
    @FormUrlEncoded
    @POST("pad/Into/Into03")
    Observable<BaseModel<ScanShelfCodeBean>> scanShelfCode(@Field("code") String code);

    /**
     * 入库单详情(产品)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST("pad/Into/Into04")
    Observable<BaseModel<List<ProductDetailBean>>> intoDetail01(@Field("type_id") String type_id, @Field("order_sn") String order_sn);

    /**
     * 入库单详情(配件)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST("pad/Into/Into04")
    Observable<BaseModel<List<FittingDetailBean>>> intoDetail02(@Field("type_id") String type_id, @Field("order_sn") String order_sn);

    /**
     * 入库保存
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST("pad/Into/Into05")
    Observable<BaseModel<Object>> intoKuSave(@Field("type_id") String type_id, @Field("order_sn") String order_sn, @Field("tier_id") String tier_id,
                                             @Field("items") String items);

    /**
     * 获取产品信息
     */
    @FormUrlEncoded
    @POST("pad/Into/Into06")
    Observable<BaseModel<ProductInfo>> getProductInfo(@Field("goods_sn") String goods_sn);

    /**
     * 获取配件信息
     */
    @FormUrlEncoded
    @POST("pad/Into/Into07")
    Observable<BaseModel<FittingInfo>> Into07(@Field("matter_code") String matter_code);


    /**
     * 获取配件信息
     */
    @FormUrlEncoded
    @POST("pad/Into/Into64")
    Observable<BaseModel<Object>> Into64(@Field("type") String type, @Field("order_sn") String order_sn, @Field("warehouse_coordinates") String warehouse_coordinates,
                                         @Field("transit_code") String transit_code, @Field("matter_code") String matter_code, @Field("pd_num") String pd_num);

    /**
     * 通过产品序列号获取对应信息
     */
    @FormUrlEncoded
    @POST("pad/Into/Into08")
    Observable<BaseModel<ZXGoodsInfo>> Into08(@Field("type") String type, @Field("serial_code") String serial_code, @Field("order_sn") String order_sn);

    /**
     * 中转箱数据预存
     */
    @FormUrlEncoded
    @POST("pad/Into/Into09")
    Observable<BaseModel<Object>> Into09(@Field("order_sn") String order_sn, @Field("type") String type, @Field("barcode") String barcode,
                                         @Field("serial_code_items") JSONArray serial_code_items);

    /**
     * 获取产品类型
     */
    @POST("pad/Into/Into10")
    Observable<BaseModel<List<TypeInfo>>> Into10();

    /**
     * 获取凭证类型
     */
    @POST("pad/Into/Into11")
    Observable<BaseModel<List<TypeInfo>>> Into11();

    /**
     * 获取订单对应信息
     */
    @FormUrlEncoded
    @POST("pad/Into/Into12")
    Observable<BaseModel<List<ZXOrderInfo>>> Into12(@Field("shop_type") String shop_type, @Field("order_type") String order_type,
                                                    @Field("port_type") String port_type, @Field("order_sn") String order_sn);

    /**
     * 验证仓库坐标是否存在
     */
    @FormUrlEncoded
    @POST("pad/Into/Into13")
    Observable<BaseModel<Object>> Into13(@Field("code") String code);

    /**
     * 获取中转箱数据
     */
    @FormUrlEncoded
    @POST("pad/Into/Into14")
    Observable<BaseModel<List<ZXGoodsInfo>>> Into14(@Field("barcode") String barcode);

    /**
     * 入库保存(产品)
     */
    @FormUrlEncoded
    @POST("pad/Into/Into15")
    Observable<BaseModel<String>> Into15(@Field("shop_type") String shop_type, @Field("order_sn") String order_sn, @Field("tier_code") String tier_code,
                                         @Field("items") JSONArray items, @Field("order_type") String order_type);

    /**
     * 入库保存(配件)
     */
    @FormUrlEncoded
    @POST("pad/Into/Into16")
    Observable<BaseModel<String>> Into16(@Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 入库保存(配件)(生产商)
     */
    @FormUrlEncoded
    @POST("pad/Into/Into17")
    Observable<BaseModel<String>> Into17(@Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 临时装箱类型
     */
    @POST("pad/Into/Into18")
    Observable<BaseModel<List<TypeInfo>>> Into18();

    /**
     * 临时装箱数据验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into19")
    Observable<BaseModel<Object>> Into19(@Field("order_type") String order_type, @Field("order_sn") String order_sn, @Field("code") String code,
                                         @Field("num") String num);

    /**
     * 临时装箱数据保存
     */
    @FormUrlEncoded
    @POST("pad/Into/Into20")
    Observable<BaseModel<Object>> Into20(@Field("items") JSONArray items);

    /**
     * 临时装箱数据出库
     */
    @FormUrlEncoded
    @POST("pad/Into/Into21")
    Observable<BaseModel<Object>> Into21(@Field("items") JSONArray items, @Field("order_sn") String order_sn);

    /**
     * 临时装箱内已保存数据列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into22")
    Observable<BaseModel<List<ChanpinChukuBean>>> Into22(@Field("case_code") String case_code);

    /**
     * 查询入库信息
     */
    @FormUrlEncoded
    @POST("pad/Into/Into24")
    Observable<BaseModel<List<ChaXunBean>>> Into24(@Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 验证订单是否存在
     */
    @FormUrlEncoded
    @POST("pad/Into/Into25")
    Observable<BaseModel<Object>> Into25(@Field("order_type") String order_type, @Field("order_sn") String order_sn);

    /**
     * 验证订单的类型
     */
    @FormUrlEncoded
    @POST("pad/Into/Into26")
    Observable<BaseModel<List<TypeInfo>>> Into26(@Field("type") String type);

    /**
     * 入库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into27")
    Observable<BaseModel<List<RecordListBean>>> Into27(@Field("order_type") String order_type, @Field("order_sn") String order_sn);

    /**
     * 入库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into28")
    Observable<BaseModel<List<RecordBean>>> Into28(@Field("order_type") String order_type, @Field("order_sn") String order_sn, @Field("date") String date);

    /**
     * 出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into29")
    Observable<BaseModel<List<OutRecordListBean>>> Into29(@Field("order_sn") String order_sn);

    /**
     * 出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Out/Out09")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out09(@Field("order_sn") String order_sn, @Field("start_time") String start_time, @Field("end_time") String end_time);


    @POST("pad/Into/Into77")
    Observable<BaseModel<String>> Into77();

    /**
     * 品牌商线上产品出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Out/Out13")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out13(@Field("order_sn") String order_sn, @Field("start_time") String start_time, @Field("end_time") String end_time);


    /**
     * 品牌商线上产品出库记录详情
     */
    @FormUrlEncoded
    @POST("pad/Out/Out14")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out14(@Field("order_sn") String order_sn, @Field("ck_time") String ck_time);

    /**
     * 品牌商线上产品出库记录详情
     */
    @FormUrlEncoded
    @POST("pad/Out/Out12")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out12(@Field("order_sn") String order_sn, @Field("ck_time") String ck_time);

    /**
     * 品牌商线上产品出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Out/Out11")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out11(@Field("order_sn") String order_sn, @Field("start_time") String start_time, @Field("end_time") String end_time);

    /**
     * 品牌商配件出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Out/Out15")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out15(@Field("order_sn") String order_sn, @Field("start_time") String start_time, @Field("end_time") String end_time);


    /**
     * 品牌商配件出库记录详情
     */
    @FormUrlEncoded
    @POST("pad/Out/Out16")
    Observable<BaseModel<BaseList<OutRecordListBean>>> Out16(@Field("order_sn") String order_sn, @Field("ck_time") String start_time);

    /**
     * 出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into75")
    Observable<BaseModel<BaseList<MatterRecordListBean>>> Into75(@Field("order_sn") String order_sn, @Field("page") String page, @Field("per") String per);

    /**
     * 出库记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into76")
    Observable<BaseModel<BaseList<MatterRecordListBean>>> Into76(@Field("barcode") String barcode, @Field("order_sn") String order_sn, @Field("page") String page, @Field("per") String per);


    /**
     * 出库记录详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into30")
    Observable<BaseModel<List<OutRecordListBean>>> Into30(@Field("order_sn") String order_sn, @Field("date") String date);

    /**
     * 出库弹窗
     */
    @FormUrlEncoded
    @POST("pad/Into/Into31")
    Observable<BaseModel<List<ChaXunBean>>> Into31(@Field("items") JSONArray order_sn, @Field("order_sn") String date);

    /**
     *
     */
    @FormUrlEncoded
    @POST("pad/Into/Into32")
    Observable<BaseModel<List<ZXOrderInfo>>> Into32(@Field("order_sn") String order_sn);

    /**
     * 外箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into33")
    Observable<BaseModel<String>> Into33(@Field("barcode") String barcode);

    /**
     * 装箱记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into34")
    Observable<BaseModel<List<RecordListBean>>> Into34(@Field("order_sn") String order_sn);

    /**
     * 装箱记录详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into35")
    Observable<BaseModel<List<RecordBean>>> Into35(@Field("order_sn") String order_sn, @Field("date") String date);

    /**
     * 装箱弹窗
     */
    @FormUrlEncoded
    @POST("pad/Into/Into36")
    Observable<BaseModel<List<ChaXunBean>>> Into36(@Field("items") JSONArray items, @Field("order_sn") String order_sn);

    /**
     * 通过订单SN号获取订单ID
     */
    @FormUrlEncoded
    @POST("pad/Into/Into37")
    Observable<BaseModel<String>> Into37(@Field("order_sn") String order_sn, @Field("type") String type);

    /**
     * 线上销售订单验证产品是否出库
     */
    @FormUrlEncoded
    @POST("pad/Into/Into38")
    Observable<BaseModel<String>> Into38(@Field("order_sn") String order_sn);

    /**
     * 线上销售订单详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into39")
    Observable<BaseModel<OrderDetailBean>> Into39(@Field("order_sn") String order_sn, @Field("type") String type);

    /**
     * 线上销售订单详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into40")
    Observable<BaseModel<List<OperationRecordBean>>> Into40(@Field("start_time") String start_time, @Field("end_time") String end_time);

    /**
     * 线上销售订单号查询
     */
    @FormUrlEncoded
    @POST("pad/Into/Into41")
    Observable<BaseModel<ChaXunDetailBean1>> Into41(@Field("order_sn") String order_sn);

    /**
     * 线上销售快递单号查询
     */
    @FormUrlEncoded
    @POST("pad/Into/Into42")
    Observable<BaseModel<ChaXunDetailBean2>> Into42(@Field("courier_number") String courier_number);

    /**
     * 线上销售订单发货记录
     */
    @FormUrlEncoded
    @POST("pad/Into/Into43")
    Observable<BaseModel<List<SendRecordBean>>> Into43(@Field("order_sn") String order_sn);

    /**
     * 用户连接打印机数据保存
     */
    @FormUrlEncoded
    @POST("pad/Into/Into44")
    Observable<BaseModel<String>> Into44(@Field("print_equipment") String print_equipment, @Field("print_ip") String print_ip,
                                         @Field("print_ssid") String print_ssid, @Field("print_mac") String print_mac,
                                         @Field("print_paper_width") String print_paper_width,
                                         @Field("print_paper_height") String print_paper_height,
                                         @Field("print_deviation_x") String print_deviation_x,
                                         @Field("print_deviation_y") String print_deviation_y);

    /**
     * 用户详细信息
     */
    @POST("pad/Into/Into45")
    Observable<BaseModel<UserInfoBean>> Into45();

    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into46")
    Observable<BaseModel<InStockItemBean>> Into46(@Field("serial_code") String serial_code);

    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into47")
    Observable<BaseModel<String>> Into47(@Field("tier_code") String tier_code, @Field("items") JSONArray items);

    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into48")
    Observable<BaseModel<InventoryOrderBean>> Into48(@Field("order_sn") String order_sn);


    @FormUrlEncoded
    @POST("pad/Into/Into66")
    Observable<BaseModel<SerailBean>> Into66(@Field("order_sn") String order_sn, @Field("matter_code") String matter_code);

    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into63")
    Observable<BaseModel<BaseObject<InventoryOrderBean>>> Into63(@Field("order_sn") String order_sn);


    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into69")
    Observable<BaseModel<BaseObject<InventoryOrderBean>>> Into69(@Field("order_sn") String order_sn);


    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into49")
    Observable<BaseModel<String>> Into49(@Field("order_sn") String order_sn, @Field("type") String type, @Field("items") String items);

    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into65")
    Observable<BaseModel<String>> Into65(@Field("order_sn") String order_sn, @Field("type") String type, @Field("items") JSONArray items);

    /**
     * 线上销售订单装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into71")
    Observable<BaseModel<String>> Into71(@Field("order_sn") String order_sn, @Field("type") String type, @Field("items") JSONArray items);

    /**
     * 品牌商产品盘点记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into50")
    Observable<BaseModel<List<RecordListBean>>> Into50(@Field("order_sn") String order_sn);

    /**
     * 生产商配件盘点记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into73")
    Observable<BaseModel<BaseList<RecordListBean>>> Into73(@Field("order_sn") String order_sn);


    /**
     * 生产商配件盘点记录列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into67")
    Observable<BaseModel<BaseList<RecordListBean>>> Into67(@Field("order_sn") String order_sn);

    /**
     * 品牌商产品盘点记录详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into51")
    Observable<BaseModel<List<RecordBean>>> Into51(@Field("pd_time") String pd_time, @Field("order_sn") String order_sn);


    /**
     * 品牌商产品盘点记录详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into74")
    Observable<BaseModel<BaseList<RecordBean>>> Into74(@Field("yp_time") String pd_time, @Field("order_sn") String order_sn);

    /**
     * 品牌商产品盘点记录详情
     */
    @FormUrlEncoded
    @POST("pad/Into/Into68")
    Observable<BaseModel<BaseList<RecordBean>>> Into68(@Field("yp_time") String pd_time, @Field("order_sn") String order_sn);

    /**
     * 办公邮寄订单发货操作
     */
    @FormUrlEncoded
    @POST("pad/Into/Into52")
    Observable<BaseModel<String>> Into52(@Field("order_sn") String order_sn, @Field("express_sn") String express_sn, @Field("partner_id") String partner_id,
                                         @Field("actual_weight") String actual_weight, @Field("cube") String cube, @Field("remarks") String remarks,
                                         @Field("express_name") String express_name, @Field("partner_type") String partner_type);

    /**
     * 售后邮寄订单发货操作
     */
    @FormUrlEncoded
    @POST("pad/Into/Into59")
    Observable<BaseModel<String>> Into59(@Field("order_sn") String order_sn,
                                         @Field("express_sn") String express_sn, @Field("partner_id") String partner_id,
                                         @Field("actual_weight") String actual_weight, @Field("cube") String cube,
                                         @Field("remarks") String remarks,
                                         @Field("express_name") String express_name, @Field("partner_type") String partner_type);

    /**
     * 产品采购搜索
     */
    @FormUrlEncoded
    @POST("pad/Into/Into54")
    Observable<BaseModel<SerailBean1>> Into54(@Field("type") String type, @Field("keywords") String keywords, @Field("order_sn") String order_sn, @Field("page") String page,
                                              @Field("per") String per);

    /**
     * 产品仓库搜索
     */
    @FormUrlEncoded
    @POST("pad/Into/Into55")
    Observable<BaseModel<SerailBean1>> Into55(@Field("type") String type, @Field("keywords") String keywords, @Field("page") String page,
                                              @Field("per") String per);

    /**
     * 产品销售搜索
     */
    @FormUrlEncoded
    @POST("pad/Into/Into56")
    Observable<BaseModel<SerailBean1>> Into56(@Field("type") String type, @Field("keywords") String keywords, @Field("page") String page,
                                              @Field("order_type") String order_type,
                                              @Field("per") String per);

    /**
     * 产品销售搜索
     */
    @FormUrlEncoded
    @POST("pad/Into/Into57")
    Observable<BaseModel<SerailBean1>> Into57(@Field("type") String type,
                                              @Field("type_two") String type_two,
                                              @Field("type_two_status") String type_two_status,
                                              @Field("order_sn") String order_sn,
                                              @Field("keywords") String keywords,
                                              @Field("page") String page,
                                              @Field("per") String per);

    @FormUrlEncoded
    @POST("public/cpcg/shop/scs/deliver/info/wfh")
    Observable<BaseModel<SerailBean1>> wfh(@Field("goods_model") String goods_model,
                                           @Field("order_id") String order_id,
                                           @Field("page") String page,
                                           @Field("per") String per);

    /**
     * 品牌商配件装箱验证
     */
    @FormUrlEncoded
    @POST("pad/Into/Into58")
    Observable<BaseModel<String>> Into58(@Field("order_type") String order_type, @Field("order_sn") String order_sn, @Field("num") String num,
                                         @Field("matter_code") String matter_code);

    /**
     * 物流信息
     */
    @FormUrlEncoded
    @POST("public/express/whole/logistics/inquiry")
    Observable<BaseModel<LogisticsBean>> inquiry(@Field("type") String type, @Field("id") String id, @Field("express_sn") String express_sn,
                                                 @Field("order_id") String order_id);

    /**
     * 快递类型
     */
    @FormUrlEncoded
    @POST("public/express/template/list")
    Observable<BaseModel<MailBean>> mailType(@Field("action") String action, @Field("status") String status);

    /**
     * 获取快递数量
     */
    @FormUrlEncoded
    @POST("public/kdmd/courier/number/surplus")
    Observable<BaseModel<MailNumberBean>> surplus(@Field("id") String com);

    /**
     * 物流信息
     */
    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder/express/info")
    Observable<BaseModel<LogisticsBean>> expressInfo(@Field("action") String action, @Field("express_sn") String express_sn, @Field("type") String type,
                                                     @Field("order_sn") String order_sn, @Field("express_code") String express_code);

    /**
     * 订单查询
     */
    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder")
    Observable<BaseModel<OnLineOrderBean>> onlineOrder(@Field("sales_status") String sales_status, @Field("action") String action, @Field("keywords") String keywords,
                                                       @Field("print_status") String print_status, @Field("print_start_time") String print_start_time,
                                                       @Field("print_end_time") String print_end_time, @Field("partner_type") String partner_type);

    /**
     * 订单查询
     */
    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder")
    Observable<BaseModel<OnLineOrderBean>> onlineOrder1(@Field("action") String action, @Field("keywords") String keywords,
                                                       @Field("print_status") String print_status, @Field("print_start_time") String print_start_time,
                                                       @Field("print_end_time") String print_end_time, @Field("partner_type") String partner_type);

    /**
     * 清单状态更新
     */
    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder/print/update")
    Observable<BaseModel<String>> updateOrder(@Field("action") String action, @Field("order_sn") String order_sn);




    /**
     * 发货状态更新
     */
    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder/print/new/fh/update")
    Observable<BaseModel<String>> updateFhOrder(@Field("action") String action, @Field("order_sn") String order_sn);

    /**
     * 办公状态更新
     */
    @FormUrlEncoded
    @POST("pps/office/mail/order/print/update")
    Observable<BaseModel<String>> updateOrder2(@Field("action") String action, @Field("order_sn") String order_sn);

    /**
     * 售后邮寄状态更新
     */
    @FormUrlEncoded
    @POST("pad/Into/Into60")
    Observable<BaseModel<String>> updateOrder3(@Field("action") String action, @Field("order_sn") String order_sn);

    @FormUrlEncoded
    @POST("pps/business/partner/list")
    Observable<BaseModel<MailBean1>> mailType1(@Field("action") String action, @Field("status") String status);

    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder/log/sure")
    Observable<BaseModel<String>> upOrder(@Field("action") String action, @Field("order_id") String order_id, @Field("express_sn") String express_sn,
                                          @Field("actual_weight") String actual_weight, @Field("cube") String cube, @Field("partner_id") String partner_id,
                                          @Field("sales_status") String sales_status, @Field("remarks") String remarks,
                                          @Field("express_name") String express_name, @Field("partner_type") String partner_type);


    @POST("public/baidu/ocr/get/token")
    Observable<BaseModel<String>> baiduToken();

    @FormUrlEncoded
    @POST("public/baidu/ocr/kdmd/distinguish")
    Observable<BaseModel<String>> distinguish(@Field("access_token") String access_token,
                                              @Field("image_url") String image_url,
                                              @Field("order_sn") String order_sn);

    /**
     * 订单展示
     */
    @FormUrlEncoded
    @POST("pps/control/productSell/onlineOrder/edit_show")
    Observable<BaseModel<OrderDetailBean>> editShow(@Field("action") String action, @Field("order_id") String keywords);

    /**
     * 序列号信息列表
     */
    @FormUrlEncoded
    @POST("pps/control/serail")
    Observable<BaseModel<SerailBean>> serail(@Field("action") String action, @Field("keywords") String keywords, @Field("status") String status,
                                             @Field("sys_type") String sys_type, @Field("pd_status") String pd_status);

    /**
     * 序列号信息列表
     */
    @FormUrlEncoded
    @POST("pps/office/mail/list")
    Observable<BaseModel<OfficeBean>> office(@Field("action") String action, @Field("keywords") String keywords,
                                             @Field("status") String status,
                                             @Field("print_status") String print_status, @Field("start_time") String print_start_time,
                                             @Field("end_time") String print_end_time, @Field("page") String page,
                                             @Field("per") String per);

    @FormUrlEncoded
    @POST("pps/office/mail/list")
    Observable<BaseModel<OfficeBean>> office1(@Field("action") String action, @Field("keywords") String keywords,
                                              @Field("print_status") String print_status,
                                              @Field("start_time") String print_start_time, @Field("end_time") String print_end_time,
                                              @Field("page") String page, @Field("per") String per);

    /**
     * 搜索
     */
    @FormUrlEncoded
    @POST("pps/control/serail")
    Observable<BaseModel<SerailBean>> serail1(@Field("action") String action, @Field("keywords") String keywords, @Field("status") String status,
                                              @Field("sys_type") String sys_type);

    /**
     * 搜索
     */
    @FormUrlEncoded
    @POST("public/cpcg/shop/scs/deliver/info")
    Observable<BaseModel<SerailBean1>> serail12(@Field("order_id") String order_id,
                                                @Field("page") String page, @Field("per") String per);

    /**
     * 售后邮寄列表
     */
    @FormUrlEncoded
    @POST("pps/control/afterSell/RepairList")
    Observable<BaseModel<OfficeBean>> repairList(@Field("action") String action, @Field("keywords") String keywords, @Field("print_status") String print_status,
                                                 @Field("start_time") String print_start_time, @Field("end_time") String print_end_time,
                                                 @Field("page") String page, @Field("per") String per);

    /**
     * 订单展示
     */
    @FormUrlEncoded
    @POST("public/kdmd/courier/number/img")
    Observable<BaseModel<KuaiDiBean>> getKuaiDiCode(@Field("name") String name, @Field("mobile") String mobile, @Field("printAddr") String printAddr,
                                                    @Field("count") String count, @Field("weight") String weight, @Field("payType") String payType,
                                                    @Field("expType") String expType, @Field("remark") String remark, @Field("tempid") String tempid,
                                                    @Field("type") String type, @Field("type_id") String type_id, @Field("id") String kuaidicom);


    /**
     * 订单展示
     */
    @FormUrlEncoded
    @POST("public/pub03")
    Observable<BaseModel<THRecordBean>> pub03(@Field("order_type") String order_type, @Field("order_sn") String order_sn,
                                              @Field("start_time") String start_time, @Field("end_time") String end_time);

    /**
     * 品牌商退货记录详情
     */
    @FormUrlEncoded
    @POST("public/pub04")
    Observable<BaseModel<THRecordBean>> pub04(@Field("order_type") String order_type, @Field("order_sn") String order_sn, @Field("time") String time);

    /**
     * 加载出库单(产品)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST("pad/Out/Out01")
    Observable<BaseModel<List<ProductDetailBean>>> getOutProductList(@Field("shop_type") String type_id, @Field("order_sn") String order_sn);

    /**
     * 加载出库单(配件)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST("pad/Out/Out01")
    Observable<BaseModel<OutStockItemBean>> Out01(@Field("shop_type") String shop_type, @Field("order_sn") String order_sn,
                                                  @Field("order_type") String order_type);


    @FormUrlEncoded
    @POST("pad/Into/Into78")
    Observable<BaseModel<KuaiDiImgBean>> Into78(@Field("type") String type,
                                                @Field("order_sn") String order_sn,
                                                @Field("kuaidinum") String kuaidinum);
    /**
     * 加载出库单(配件)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST
    Observable<BaseModel<OnlineOutStockItemBean>> details(@Url String url, @Field("order_sn") String order_sn);

    /**
     * 加载出库单(配件)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST
    Observable<BaseModel<OnlineOutStockItemBean>> peiJianDetails(@Url String url, @Field("order_sn") String order_sn);

    /**
     * 加载出库单(配件)
     * type_id: 产品类型：1产品；2配件
     */
    @FormUrlEncoded
    @POST
    Observable<BaseModel<MaterialInfoBean>> materialInfo(@Url String url, @Field("action") String action, @Field("order_sn") String order_sn);


    /**
     * 扫描产品编码
     * type: 1产品序列号、2配件编号、3中转箱条码
     */
    @FormUrlEncoded
    @POST("pad/Out/Out02")
    Observable<BaseModel<List<ScanGoodsCodeBean>>> scanGoodsCode(@Field("type") String type, @Field("code") String code);


    /**
     * 提交保存出库单
     */
    @FormUrlEncoded
    @POST("pad/Out/Out03")
    Observable<BaseModel<Object>> Out03(@Field("order_type") String type_id, @Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 提交保存出库单
     */
    @FormUrlEncoded
    @POST("pad/Out/Out10")
    Observable<BaseModel<Object>> Out10(@Field("order_type") String type_id, @Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 提交保存出库单
     */
    @FormUrlEncoded
    @POST("pad/Out/Out07")
    Observable<BaseModel<Object>> Out07(@Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 提交保存出库单
     */
    @FormUrlEncoded
    @POST("pad/Out/Out05")
    Observable<BaseModel<Object>> Out05(@Field("order_type") String order_type,
                                        @Field("order_sn") String order_sn,
                                        @Field("type") String type,
                                        @Field("shelves_code") String shelves_code,
                                        @Field("transit_code") String transit_code,
                                        @Field("items") JSONArray items);

    /**
     * 出库产品验证
     */
    @FormUrlEncoded
    @POST("pad/Out/Out04")
    Observable<BaseModel<ScanChukuBean>> Out04(@Field("serial_code") String serial_code);

    /**
     * 出库产品验证
     */
    @FormUrlEncoded
    @POST("pad/Out/Out06")
    Observable<BaseModel<ScanChukuBean>> Out06(@Field("order_sn") String order_sn, @Field("warehouse_coordinates") String warehouse_coordinates, @Field("transit_code") String transit_code,
                                               @Field("matter_code") String matter_code, @Field("num") String num);


    /**
     * 出库保存(配件)(生产商)
     */
    @FormUrlEncoded
    @POST("pad/Out/Out08")
    Observable<BaseModel<String>> Out08(@Field("order_sn") String order_sn, @Field("items") JSONArray items);

    /**
     * 扫仓库坐标
     */
    @FormUrlEncoded
    @POST("pad/Barcode/Barcode01")
    Observable<BaseModel<StockPostionBean>> scanStockPostion(@Field("code") String code);

    /**
     * 扫中转箱
     */
    @FormUrlEncoded
    @POST("pad/Barcode/Barcode02")
    Observable<BaseModel<TransferBoxBean>> scanTransferBox(@Field("code") String code);

    /**
     * 搜索分页
     */
    @FormUrlEncoded
    @POST("pad/Point/SearchPage")
    Observable<BaseModel<Integer>> searchPage(@Field("key") String key);

    /**
     * 搜索列表
     */
    @FormUrlEncoded
    @POST("pad/Point/SearchList")
    Observable<BaseModel<List<SearchItemBean>>> searchList(@Field("key") String key, @Field("page") String page);


    /**
     * 搜索列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into61")
    Observable<BaseModel<SearchBean>> Into61(@Field("keywords") String key,
                                             @Field("page") String page,
                                             @Field("per") String per,
                                             @Field("order_type") String order_type,
                                             @Field("ck_type") String ck_type);

    /**
     * 搜索列表
     */
    @FormUrlEncoded
    @POST("pad/Into/Into62")
    Observable<BaseModel<SearchBean>> Into62(@Field("keywords") String key,
                                             @Field("page") String page,
                                             @Field("per") String per,
                                             @Field("order_type") String order_type);


}
